You’ll need to first install the {tidycovid19} package from GitHub

remotes::install_github("joachim-gassen/tidycovid19")

Load packages and set theme

library(tidyverse)
library(tidycovid19)
library(lubridate)
library(countrycode)
library(gghighlight)
library(RcppRoll)
library(scales)
library(hrbrthemes)
library(gt)
theme_set(theme_ipsum())

Download latest data

merged <- 
  download_merged_data(cached = TRUE)

gcmr_raw_country <- 
  download_google_cmr_data(cached = TRUE, type = "country")

gcmr_raw_country_region <- 
  download_google_cmr_data(cached = TRUE, type = "country_region")

mtr_raw_country <- 
  download_apple_mtr_data(cached = TRUE, type = "country")

mtr_raw_country_region <- 
  download_apple_mtr_data(cached = TRUE, type = "country_region")

acaps <- 
  download_acaps_npi_data(cached = TRUE)

OECD country list

oecd_names <- c("Austria", "Belgium", "Czech Republic", "Denmark", "Estonia", "Finland", "France", "Germany", "Greece", "Hungary", "Iceland", "Ireland", "Italy", "Latvia", "Luxembourg", "Netherlands", "Norway", "Poland", "Portugal", "Slovak Republic", "Slovenia", "Spain", "Sweden", "Switzerland", "United Kingdom",  "Canada", "Chile", "Mexico", "United States", "Australia", "Japan", "Korea", "New Zealand", "Israel", "Turkey")

# OECD countries list
oecd_iso3c <- 
  countrycode(
    oecd_names,
    origin = "country.name",
    destination = "iso3c"
  )

Other countries of interst

interesting_countries <- c(
  "Israel", "Austria", "Sweden", "Singapore", "Germany",
  "Korea, South", "US", "United Kingdom", "Taiwan*"
)

Filter OECD data

oecd <- merged %>% 
  filter(iso3c %in% oecd_iso3c) %>% 
  mutate(date = ymd(date))

israel <- oecd %>% 
  filter(iso3c == "ISR")

Israel

GCMR

israel_gcmr <- 
  gcmr_raw_country %>% 
  filter(iso3c == "ISR") %>%
  select(-c(iso3c, timestamp)) %>% 
  drop_na() %>% 
  mutate_if(is.numeric, ~ roll_mean(., 7, fill = NA, align = "right")) %>% 
  pivot_longer(-date, values_to = "index", names_to = "location")
  
p_israel_gcmr <- israel_gcmr %>% 
  mutate(
    location = str_replace_all(location, "_", " "),
    location = str_to_title(location)
  ) %>% 
  ggplot(aes(date, index, color = location)) +
  geom_line(size = 1) + 
  labs(
    y = "Change compared to baseline (percent)",
    x = "",
    title = "Mobility trends for Israel by Place",
    subtitle = "(7-day moving average)",
    color = "",
    lty = "",
    caption = "Notes: The shaded area indicates Israeli lockdown period.\nSource: Google Community Mobility Report."
  ) +
  scale_x_date(labels = date_format("%d/%m")) +
  theme(
    legend.position="top",
    plot.caption = element_text(hjust = 0)
  ) +
  scale_color_viridis_d() +
  gghighlight(last(index) != 0, label_key = location) +
  geom_hline(aes(yintercept = 0), color = "black", linetype = 2, size = 0.5) +
  annotate("rect", xmin = ymd("2020-03-17"), xmax = ymd("2020-04-19"), ymin = -Inf, ymax = +Inf, alpha = 0.1)


p_israel_gcmr 

AMTR

israel_apple <- 
  oecd %>% 
  filter(iso3c == "ISR") %>% 
  select(date, starts_with("apple")) %>% 
  mutate_if(is.numeric, ~ roll_mean(., 7, fill = NA, align = "right")) %>%    pivot_longer(-date, values_to = "index", names_to = "type") %>% 
  separate(type, into = c("source", "type"), sep = "mtr_", extra = "merge") %>% 
  drop_na()
  
p_israel_apple <- israel_apple %>% 
  filter(type != "transit") %>% 
  mutate(type = str_to_title(type)) %>% 
  ggplot(aes(date, index, color = type)) +
  geom_line(size = 1) + 
  geom_hline(aes(yintercept = 100), color = "black", linetype = 2, size = 0.5) +
  labs(
    y = "Change compared to baseline (percent)",
    x = "",
    title = "Direction Requests in Israel",
    subtitle = "(7-day moving average)",
    color = "",
    lty = "",
    caption = "Notes: The shaded area indicates Israeli lockdown period.\nSource: Apple Mobility Trend Report."
  ) +
  scale_x_date(labels = date_format("%d/%m")) +
  # theme_minimal() +
  theme(
    legend.position="top",
    plot.caption = element_text(hjust = 0)
  ) +
  scale_color_viridis_d() +
  gghighlight(last(index) != 0, label_key = type) +
  annotate("rect", xmin = ymd("2020-03-17"), xmax = ymd("2020-04-19"), ymin = -Inf, ymax = +Inf, alpha = 0.1)

p_israel_apple

Regional

GCMR

regional_gcmr <- 
  gcmr_raw_country_region %>%
  filter(iso3c == "ISR") %>% 
  mutate(date = ymd(date)) %>%
  select(-c(iso3c, timestamp)) %>% 
  drop_na()
regional_gcmr_long <- 
  regional_gcmr %>% 
  pivot_longer(
    -c(region, date),
    values_to = "index",
    names_to = "location"
  ) %>% 
  mutate(region = str_remove(region, " District"))

regional_gcmr_long_ma <- 
  regional_gcmr_long %>% 
  group_by(region, location) %>% 
  mutate(index_ma = roll_mean(index, 7, fill = NA, align = "right")) %>% 
  ungroup()

Workplaces

p_regional_gcmr_work <- regional_gcmr_long_ma %>% 
  mutate(
    location = str_replace(location, "_", " "),
    location = str_to_title(location)
  ) %>% 
  filter(
    region != "Center",
    location %in% c("Workplaces")
  ) %>% 
  drop_na() %>% 
  ggplot() +
  geom_line(aes(date, index_ma, color = region), size = 1) +
  geom_hline(aes(yintercept = 0), color = "black", linetype = 2, size = 0.5) +
  scale_color_viridis_d() +
  gghighlight(last(index_ma) < 0, label_key = region) +
  theme(
    legend.position="top",
    plot.caption = element_text(hjust = 0)
    ) +
  labs(
    color = "District",
    y = "Change from baseline (percent)",
    x = "",
    title = "Mobility Trends to Workplaces by District",
    subtitle = "(7-day moving average)",
    caption = "Notes: The shaded area indicates Israeli lockdown period.\nSource: Google Community Mobility Report."
  ) +
  scale_x_date(labels = date_format("%d/%m")) +
  annotate("rect", xmin = ymd("2020-03-17"), xmax = ymd("2020-04-19"), ymin = -Inf, ymax = +Inf, alpha = 0.1)
  

p_regional_gcmr_work

Retail

p_regional_gcmr_retail <- regional_gcmr_long_ma %>% 
  mutate(
    location = str_replace(location, "_", " "),
    location = str_to_title(location)
  ) %>% 
  filter(
    region != "Center",
    location %in% c("Retail Recreation")
  ) %>% 
  drop_na() %>% 
  ggplot() +
  geom_line(aes(date, index_ma, color = region), size = 1) +
  geom_hline(aes(yintercept = 0), color = "black", linetype = 2, size = 0.5) +
  scale_color_viridis_d() +
  gghighlight(last(index_ma) < 0, label_key = region) +
  theme(
    legend.position="top",
    plot.caption = element_text(hjust = 0)
    ) +
  labs(
    color = "District",
    y = "Change from baseline (percent)",
    x = "",
    title = "Mobility Trends to Places of Retail and Recreation by District",
    subtitle = "(7-day moving average)",
    caption = "Notes: The shaded area indicates Israeli lockdown period.\nSource: Google Community Mobility Report."
  ) +
  scale_x_date(labels = date_format("%d/%m")) +
  annotate("rect", xmin = ymd("2020-03-17"), xmax = ymd("2020-04-19"), ymin = -Inf, ymax = +Inf, alpha = 0.1) 
  

p_regional_gcmr_retail

Transit

p_regional_gcmr_transit <- regional_gcmr_long_ma %>% 
  mutate(
    location = str_replace(location, "_", " "),
    location = str_to_title(location)
  ) %>% 
  filter(
    region != "Center",
    location %in% c("Transit Stations")
  ) %>% 
  drop_na() %>% 
  ggplot() +
  geom_line(aes(date, index_ma, color = region), size = 1) +
  geom_hline(aes(yintercept = 0), color = "black", linetype = 2, size = 0.5) +
  scale_color_viridis_d() +
  gghighlight(last(index_ma) < 0, label_key = region) +
  theme(
    legend.position="top",
    plot.caption = element_text(hjust = 0)
    ) +
  labs(
    color = "District",
    y = "Change from baseline (percent)",
    x = "",
    title = "Mobility Trends to Transit Stations by District",
    subtitle = "(7-day moving average)",
    caption = "Notes: The shaded area indicates Israeli lockdown period.\nSource: Google Community Mobility Report."
  ) +
  scale_x_date(labels = date_format("%d/%m")) +
  annotate("rect", xmin = ymd("2020-03-17"), xmax = ymd("2020-04-19"), ymin = -Inf, ymax = +Inf, alpha = 0.1) 
  

p_regional_gcmr_transit

AMTR

regional_amtr <- 
  mtr_raw_country_region %>%
  filter(iso3c == "ISR") %>% 
  mutate(date = ymd(date)) %>%
  select(-c(iso3c, timestamp)) %>% 
  mutate(region = str_remove(region, " District")) %>% 
  drop_na()
regional_long_ma <- 
  regional_amtr %>% 
  group_by(region) %>% 
  mutate(driving_ma = roll_mean(driving, 7, fill = NA, align = "right")) %>% 
  ungroup()

p_regional_amtr <- regional_long_ma %>% 
  # filter(region != "Center") %>% 
  ggplot() +
  geom_line(aes(date, driving_ma, color = region), size = 1) +
  geom_hline(aes(yintercept = 100), color = "black", linetype = 2, size = 0.5) +
  scale_color_viridis_d() +
  theme(
    legend.position="top",
    plot.caption = element_text(hjust = 0)
    ) +
  labs(
    color = "District",
    y = "Change from baseline (percent)",
    x = "",
    title = "Driving Direction Requests by District",
    subtitle = "(7-day moving average)",
    caption = "Notes: The shaded area indicates Israeli lockdown period.\nSource: Apple Mobility Trends Report."
  ) +
  scale_x_date(labels = date_format("%d/%m")) +
  gghighlight(last(driving_ma) != 0, label_key = region) +
  annotate("rect", xmin = ymd("2020-03-17"), xmax = ymd("2020-04-19"), ymin = -Inf, ymax = +Inf, alpha = 0.1)

  
p_regional_amtr

OECD plots

Workplaces

oecd_range <- 
  gcmr_raw_country %>%
  group_by(iso3c) %>% 
  mutate_if(is.numeric, ~ roll_mean(., 7, fill = 0, align = "right")) %>% 
  ungroup() %>% 
  select(date, iso3c, workplaces) %>% 
  group_by(date) %>% 
  summarise(
    gcmr_q50 = median(workplaces, na.rm = TRUE),
    gcmr_q90 = quantile(workplaces, probs = .90, na.rm = TRUE),
    gcmr_q10 = quantile(workplaces, probs = .10, na.rm = TRUE),
    max      = max(workplaces, na.rm = TRUE),
    min      = min(workplaces, na.rm = TRUE)
  )

israel_gcmr <- 
  gcmr_raw_country %>% 
  filter(iso3c == "ISR") %>% 
  select(date, workplaces) %>% 
  mutate(workplaces = roll_mean(workplaces, 7, fill = 0, align = "right")) %>%
  left_join(oecd_range) %>% 
  filter(date >= ymd("2020-02-15"))


p_work_ribbon <- israel_gcmr %>% 
  ggplot(aes(x = date, y = gcmr_q50)) +
  geom_line(
    aes(x = date, y = gcmr_q50, color = "OECD median"),
    size = 1,
    color = "#6DCD59"
  ) +
  geom_line(
    data = israel_gcmr,
    aes(x = date, y = workplaces),
    color = "#3E4A89",
    size = 1,
  ) +
  geom_ribbon(
    aes(ymin = min, ymax = max),
    fill = "#6DCD59",
    alpha = 0.2
  ) +
  geom_ribbon(
    aes(ymin = gcmr_q10, ymax = gcmr_q90),
    fill = "#6DCD59",
    alpha = 0.2
  ) +
  geom_hline(aes(yintercept = 0), color = "black", linetype = 2, size = 0.5) +
  annotate("text", x = ymd("2020-05-4"), y = -0.35, label = "OECD", color = "#6DCD59") +
  annotate("text", x = ymd("2020-05-4"), y = -0.5, label = "Israel", color = "#3E4A89") +
  labs(
    y = "Change compared to baseline (percent)",
    x = "",
    title = "Mobility Trends for Places of Work",
    subtitle = "(Israel vs. OECD median, 7-day moving average)",
    color = "",
    lty = "",
    caption = "Notes: Dark and light shaded areas around the green line indicate the 90-10 percentile and max-min range, respectively.\nSource: Google Community Mobility Report."
  ) +
  scale_x_date(labels = date_format("%d/%m")) +
  theme(
    legend.position="top",
    plot.caption = element_text(hjust = 0)
  ) 

  
p_work_ribbon

Retail

oecd_range <- 
  gcmr_raw_country %>%
  group_by(iso3c) %>% 
  mutate_if(is.numeric, ~ roll_mean(., 7, fill = 0, align = "right")) %>% 
  ungroup() %>%
  select(date, iso3c, retail_recreation) %>% 
  group_by(date) %>% 
  summarise(
    gcmr_q50 = median(retail_recreation, na.rm = TRUE),
    gcmr_q90 = quantile(retail_recreation, probs = .90, na.rm = TRUE),
    gcmr_q10 = quantile(retail_recreation, probs = .10, na.rm = TRUE),
    max      = max(retail_recreation, na.rm = TRUE),
    min      = min(retail_recreation, na.rm = TRUE)
  )

israel_gcmr <- 
  gcmr_raw_country %>% 
  filter(iso3c == "ISR") %>% 
  mutate(retail_recreation = roll_mean(retail_recreation, 7, fill = 0, align = "right")) %>%
  select(date, retail_recreation) %>% 
  left_join(oecd_range) %>% 
  filter(date >= ymd("2020-02-15"))


p_retail_ribbon <- israel_gcmr %>% 
  ggplot(aes(x = date, y = gcmr_q50)) +
  geom_line(
    aes(x = date, y = gcmr_q50),
    size = 1,
    color = "#6DCD59"
  ) +
  geom_line(
    data = israel_gcmr,
    aes(x = date, y = retail_recreation),
    color = "#3E4A89",
    size = 1,
  ) +
  geom_ribbon(
    aes(ymin = min, ymax = max),
    fill = "#6DCD59",
    alpha = 0.2
  ) +
  geom_ribbon(
    aes(ymin = gcmr_q10, ymax = gcmr_q90),
    fill = "#6DCD59",
    alpha = 0.2
  ) +
  geom_hline(aes(yintercept = 0), color = "black", linetype = 2, size = 0.5) +
  annotate("text", x = ymd("2020-05-4"), y = -0.55, label = "OECD", color = "#6DCD59") +
  annotate("text", x = ymd("2020-05-4"), y = -0.7, label = "Israel", color = "#3E4A89") +
  labs(
    y = "Change compared to baseline (percent)",
    x = "",
    title = "Mobility Trends for Places of Retail and Recreation",
    subtitle = "(Israel vs. OECD median, 7-day moving average)",
    color = "",
    lty = "",
    caption = "Notes: Dark and light shaded areas around the green line indicate the 90-10 percentile and max-min range, respectively.\nSource: Google Community Mobility Report."
  ) +
  scale_x_date(labels = date_format("%d/%m")) +
  theme(
    legend.position="top",
    plot.caption = element_text(hjust = 0)
  ) 

p_retail_ribbon

Driving

oecd_range_driving <- 
  mtr_raw_country %>%
  group_by(iso3c) %>% 
  mutate_if(is.numeric, ~ roll_mean(., 7, fill = 0, align = "right")) %>% 
  ungroup() %>%
  select(date, iso3c, driving) %>% 
  group_by(date) %>% 
  summarise(
    mtr_q50 = median(driving, na.rm = TRUE),
    mtr_q90 = quantile(driving, probs = .90, na.rm = TRUE),
    mtr_q10 = quantile(driving, probs = .10, na.rm = TRUE),
    max      = max(driving, na.rm = TRUE),
    min      = min(driving, na.rm = TRUE)
  )

israel_driving <- 
  mtr_raw_country %>% 
  filter(iso3c == "ISR") %>% 
  mutate(driving = roll_mean(driving, 7, fill = 0, align = "right")) %>%
  select(date, driving) %>% 
  left_join(oecd_range_driving) %>% 
  filter(date >= ymd("2020-02-15"))


p_driving_ribbon <- israel_driving %>% 
  ggplot(aes(x = date, y = mtr_q50)) +
  geom_line(
    aes(x = date, y = mtr_q50),
    size = 1,
    color = "#6DCD59"
  ) +
  geom_line(
    data = israel_driving,
    aes(x = date, y = driving),
    color = "#3E4A89",
    size = 1,
  ) +
  geom_ribbon(
    aes(ymin = min, ymax = max),
    fill = "#6DCD59",
    alpha = 0.2
  ) +
  geom_ribbon(
    aes(ymin = mtr_q10, ymax = mtr_q90),
    fill = "#6DCD59",
    alpha = 0.2
  ) +
  geom_hline(aes(yintercept = 100), color = "black", linetype = 2, size = 0.5) +
  annotate("text", x = ymd("2020-05-7"), y = 45, label = "OECD", color = "#6DCD59") +
  annotate("text", x = ymd("2020-05-7"), y = 55, label = "Israel", color = "#3E4A89") +
  labs(
    y = "Change compared to baseline (percent)",
    x = "",
    title = "Direction Requests, Driving",
    subtitle = "(Israel vs. OECD median, 7-day moving average)",
    color = "",
    lty = "",
    caption = "Notes: Dark and light shaded areas around the green line indicate the 90-10 percentile and max-min range, respectively.\nSource: Apple Mobility Trends Report."
  ) +
  scale_x_date(labels = date_format("%d/%m")) +
  theme(
    legend.position="top",
    plot.caption = element_text(hjust = 0)
  ) 

p_driving_ribbon

Phase-out

phase_in <- 
  acaps %>%
  filter(
    log_type != "Phase-out measure"
  ) %>%
  mutate(date = ymd(date_implemented)) %>%
  group_by(iso3c, date) %>%
  summarise(
    n_phase_in = n()
  )

phase_out <- 
  acaps %>%
  filter(
    log_type == "Phase-out measure"
  ) %>%
  mutate(date = ymd(date_implemented)) %>%
  group_by(iso3c, date) %>%
  summarise(n_phase_out = n())


phase_in_out <- 
  merged %>% 
  left_join(phase_in) %>% 
  left_join(phase_out) %>%
  replace_na(list(n_phase_out = 0, n_phase_in = 0)) %>% 
  group_by(iso3c) %>% 
  mutate(
    cum_phase_out = cumsum(n_phase_out),
    cum_phase_in  = cumsum(n_phase_in),
    share_out     = 100*cum_phase_out/cum_phase_in
  ) %>% 
  select(country, iso3c, date, cum_phase_in, cum_phase_out, share_out) %>% 
  drop_na()
share_out <- 
  merged %>% 
  left_join(phase_in_out) %>% 
  group_by(iso3c) %>% 
  mutate(
    max_share     = max(share_out, na.rm = TRUE),
    max_confirmed = max(confirmed, na.rm = TRUE),
    dconfirmed    = c(NA, diff(confirmed)),
    dconfirmed_ma = roll_mean(dconfirmed, 7, fill = 0, align = "right"),
    gcmr_workplaces = roll_mean(gcmr_workplaces, 7, fill = 0, align = "right"),
    gcmr_retail_recreation = roll_mean(gcmr_retail_recreation, 7, fill = 0, align = "right"),
    apple_mtr_driving = roll_mean(apple_mtr_driving, 7, fill = 0, align = "right")
  ) %>% 
  filter(date >= ymd("2020-02-15"))

share_out[share_out$iso3c == "TWN",]$population <- 23810261

Workplaces

p_phase_out_work <- 
  share_out %>%
  filter(country %in% interesting_countries) %>% 
  ggplot(aes(date, gcmr_workplaces, color = dconfirmed_ma/population*1e6)) +
  geom_line(size = 1.5) +
  facet_wrap(~ country, ncol = 5) +
  geom_hline(aes(yintercept = 0), color = "black", linetype = 2, size = 0.5) +
  scale_color_viridis_c() +
  scale_x_date(labels = date_format("%d/%m")) +
  theme_ipsum() +
  theme(
    legend.position="bottom",
    plot.caption = element_text(hjust = 0)
  ) +
  labs(
    title = "Mobility Trends to Workplaces in Phasing-out Countries",
    subtitle = "(7-day moving avarage)",
    y = "Change from baseline (percent)",
    x = "",
    color = "Daily change in confirmed cases\n per million people (7-day moving average)",
    caption = "\nSource: Google Community Mobility Report, ACAPS, and Johns Hopkins University CSSE."
  ) +
  guides(color = guide_colourbar(barwidth = 10, barheight = .5))

p_phase_out_work

Retail

p_phase_out_retail <- share_out %>% 
  filter(country %in% interesting_countries) %>%
  ggplot(aes(date, gcmr_retail_recreation, color = dconfirmed_ma/population*1e6)) +
  geom_line(size = 1.5) +
  facet_wrap(~ country, ncol = 5) +
  geom_hline(aes(yintercept = 0), color = "black", linetype = 2, size = 0.5) +
  scale_color_viridis_c() +
  scale_x_date(labels = date_format("%d/%m")) +
  theme_ipsum() +
  theme(
    legend.position="bottom",
    plot.caption = element_text(hjust = 0)
  ) +
  labs(
    title = "Mobility Trends to Places of Retail and Recreation in Phasing-out Countries",
    subtitle = "(7-day moving avarage)",
    y = "Change from baseline (percent)",
    x = "",
    color = "Daily change in confirmed cases\n per million people (7-day moving average)",
    caption = "\nSource: Google Community Mobility Report, ACAPS, and Johns Hopkins University CSSE."
  ) +
  guides(color = guide_colourbar(barwidth = 10, barheight = .5)) 

p_phase_out_retail

Driving

p_phase_out_driving <- share_out %>% 
  filter(country %in% interesting_countries) %>%
  ggplot(aes(date, apple_mtr_driving, color = dconfirmed_ma/population*1e6)) +
  geom_line(size = 1.5) +
  facet_wrap(~ country, ncol = 5) +
  geom_hline(aes(yintercept = 100), color = "black", linetype = 2, size = 0.5) +
  scale_color_viridis_c() +
  scale_x_date(labels = date_format("%d/%m")) +
  theme_ipsum() +
  theme(
    legend.position="bottom",
    plot.caption = element_text(hjust = 0)
  ) +
  labs(
    title = "Direction Requests in Phasing-out Countries",
    subtitle = "(7-day moving avarage)",
    y = "Change from baseline (percent)",
    x = "",
    color = "Daily change in confirmed cases\n per million people (7-day moving average)",
    caption = "\nSource: Apple Mobility Trends Report, ACAPS, and Johns Hopkins University CSSE."
  ) +
  guides(color = guide_colourbar(barwidth = 10, barheight = .5)) 

p_phase_out_driving

Share-out index

p_phase_out <- 
  share_out %>%
  filter(
    max_share > 0,
    max_confirmed > 10000
  ) %>% 
  ggplot(aes(date, share_out, color = dconfirmed_ma/population*1e6)) +
  geom_line(size = 1.5) +
  facet_wrap(~ country, ncol = 5) +
  geom_hline(aes(yintercept = 0), color = "black", linetype = 2, size = 0.5) +
  scale_color_viridis_c() +
  scale_x_date(labels = date_format("%d/%m")) +
  theme_ipsum() +
  theme(
    legend.position="bottom",
    plot.caption = element_text(hjust = 0)
  ) +
  labs(
    title = "Phase-out index and COVID-19 Spread",
    subtitle = "(7-day moving avarage)",
    y = "Change from baseline (percent)",
    x = "",
    color = "Daily change in confirmed cases\n per million people (7-day moving average)",
    caption = "\nSource: Apple Mobility Trends Report, ACAPS, and Johns Hopkins University CSSE."
  ) +
  guides(color = guide_colourbar(barwidth = 10, barheight = .5)) 

p_phase_out

Measures table

phase_out_measure <- acaps %>%
  filter(log_type == "Phase-out measure") %>%
  mutate(date = ymd(date_implemented)) %>% 
  select(date, country, measure, comments) %>% 
  left_join(
    merged %>% 
      select(date, country, confirmed)
  ) %>% 
  filter(confirmed > 10000) %>% 
  select(-confirmed)

phase_out_measure %>% 
  group_by(country) %>% 
  gt() %>% 
  tab_header(
    title = "Phase-out Measures",
    subtitle = "Countries with more than 10,000 cconfirmed cases"
  ) %>% 
   tab_source_note(
    source_note = md("Source: ACAPS.")
  ) %>% 
  cols_width(
    starts_with("date") ~ px(100),
    starts_with("measure") ~ px(150), 
    starts_with("comments") ~ px(400)
  )
Phase-out Measures
Countries with more than 10,000 cconfirmed cases
date measure comments
Austria
2020-04-07 Partial lockdown Tyrol is aligning itself with the federal line, movement between municipalities is allowed again
2020-04-14 Public services closure  Public transportation is increased in view of the other public service opennings
2020-04-14 Limit public gatherings Stores with less than 400sqm are allowed to re-open under existing hygiene measures
2020-05-01 Public services closure  All stores and services (e.g. hair dresser) allowed to re-open under strict existing hygiene measures
2020-04-07 Isolation and quarantine policies Further exemptions added to cross-border workers beyond essential workers, with quarantine requirement relaxed
2020-04-13 Domestic travel restrictions For municipalities of Bad Gastein, Bad Hofgastein, Dorfgastein, Großarl und Hüttschlag region
2020-04-11 Economic measures Restrictions on work safety for transport drivers slowly reinstated
2020-04-03 Limit public gatherings Take-out food from restaurants allowed again
2020-04-21 Limit public gatherings Cultural institutions with large open-air area to open from 1st June; smaller ones (to be defined) from mid-May
2020-04-11 Limit public gatherings Constructions sites to resume work again after Eastern
2020-05-01 Limit public gatherings Park Laxenburg to reopen
2020-04-09 Public services closure  Reopening of recycling facilities after Eastern
2020-04-23 Border closure  Rumanian care personell to be allowed to cross borders, starting beginning May sometime
2020-05-01 Isolation and quarantine policies Visiting in elderly homes and care homes allowed again
2020-04-17 Limit public gatherings Opening of library (18.05), various museums by 01.05
2020-05-01 Schools closure  Educational institutions in the care, legal and health sector are allowed to continue, as well as in preparation of final examinations
2020-05-01 Public services closure  Driving schools allowed to reopen; under strict hygiene measures
2020-05-01 Limit public gatherings Events of up to 10 people are allowed again, under strict hygiene measures (demonstrations are exempted from this rules)
2020-05-04 Isolation and quarantine policies Visits to elderly homes and care institutions allowed again under strict hygiene measures
2020-05-01 Other public health measures enforced Vienna reopens public drinking fountains
2020-04-30 Lockdown of refugee/idp camps or other minorities Refugee arrival centre in Traiskirchen to reopen
Belgium
2020-04-15 Limit public gatherings DIY stores and garden centres to re-open under the same social distancing rules as supermarkets
2020-04-15 Isolation and quarantine policies Allow that residents of residential facilities – for example, nursing homes, care homes and facilities for the disabled – to be visited by a designated relative or close friend (provided that that person did not have symptoms over the last 2 weeks; and the individual is the same); same rules for anyone who lives at home alone
2020-04-01 Strengthening the public health system Vaccinations are taken up again
2020-04-07 Public services closure  Recycling parks allowed to reopen for urgent matters; recommendations to not go there for non-urgent matters
2020-05-04 Limit public gatherings Fabric shops, which - given their important role in the production of mouth masks - are allowed to open their doors.
2020-05-04 Limit public gatherings Outdoor physical activity is allowed with up to two people, in addition to those living under the same roof, provided that physical distance is always respected. You will also be allowed to practice other non-contact sports outdoors.
2020-05-04 Strengthening the public health system Non-urgent appointments are gradually taken up again
2020-05-04 Public services closure  Car inspection facilities are allowed to reopen
Brazil
2020-05-01 International flights suspension phase 1 of easing restrictions: As of 1 May, flights from Brazil to USA to pickup
China
2020-04-08 Isolation and quarantine policies Urging elderly care providers in low-risk areas to restore their services, the guideline noted that a 14-day quarantine will not be required among elderly people or staff within the area before their entrance
2020-04-08 Domestic travel restrictions Wuhan lifted outbound travel restrictions on April 8
2020-04-15 Schools closure  schools should stagger reopening alongside proper containment measures put in place, a health official said on April 15.
2020-04-27 Strengthening the public health system safety should be the prerequisite for classes resumption across China as the COVID-19 epidemic situation has been eased
2020-04-30 Isolation and quarantine policies Beijing lowers COVID-19 restrictions. People from low-risk areas no longer need to undergo 14-day quarantine
2020-05-02 Emergency administrative structures activated or established Hubei province will lower its emergency response to the novel coronavirus outbreak from the top level to the second level starting on April 2.
Ecuador
2020-05-04 Partial lockdown Traffic light' deconfinement: depending on the situation, quarantine and lockdown measures will be lifted selectively across the country.
France
2020-04-20 Isolation and quarantine policies Visits to elderly homes will be allowed again under certain restrictions
Germany
2020-05-04 Schools closure  Step-wise uptake of school, starting with final school years and those relevant for attainment of qualifications; ministry tasked with defining steps for the uptake of schooling
2020-04-15 Schools closure  Special children care made available for more sector and jobs
2020-05-04 Limit public gatherings Hairdressers allowed to reopen under strict hygiene restrictions
2020-04-20 Limit public gatherings Stores with less than 800 m2 can re-open; irrespective of size, also car dealers, bike shops, and book shops allowed to reopen; all under strict hygiene regulations
2020-04-30 Public services closure  Some special cases are again consulted in-person in job centres and labour agencies
2020-04-28 Strengthening the public health system Gradual reopening of normal healthcare processes and services
2020-04-17 Border closure  Borders crossings at Remich und Bollendorf were reopened (17th April); Tintesmühle/Dahlem; Gemünd; Rosport/Ralingen; Untereisenbach/Übereisenbach reopened on 1st May
2020-05-04 Limit public gatherings Museums, exhibitions, botanical gardens, zoos and playgrounds opening again
India
2020-04-21 Partial lockdown In-house Care-givers of Senior Citizens, Prepaid mobile recharge utilities, Food processing units in urban areas exempt from Lockdown Restrictions to fight COVID-19 Post
2020-04-25 Partial lockdown MHA allows opening of certain categories of shops. In rural areas, all shops, except those in shopping malls are allowed to open.In urban areas, all standalone shops, neighborhood shops & shops in residential complexes are allowed to open. Shops in markets/market complexes and shopping malls are not allowed to open.It is clarified that sale by e-commerce companies will continue to be permitted for essential goods only.
2020-04-27 Economic measures Gov is focusing on easing policy and implementation bottleneck to supply chains of essential items
Iran
2020-04-26 Limit public gatherings Country to be divided into white, yellow, red zones based on coronavirus outbreak/ Mosques, religious places to reopen in white zones/ We still emphasise on smart social distancing despite some openings/
Israel
2020-04-19 Limit public gatherings The industry, manufacturing, and services sectors may resume working at a capacity of 30% of their workforce strength or up to 10 employees in the workplace at the same time, whichever is higher. this restriction will not apply to workplaces and businesses that will meet the "purple badge" rules, and these may employ higher workforce strengths. operating a business in violation of the regulations above shall be considered a criminal offense, as well as an administrative offense that may incur fines. Sporting-related activities will be permitted for a single person, for a single person with one regular companion, or people living in the same household, and to a distance of up to 500 meters from the place of residence. Visiting beaches, parks, playgrounds, and urban sporting facilities will not be permitted. Visiting other people's households will not be permitted (beyond 3 families standing in regular contact for babysitting purposes). Participation in bris or wedding ceremonies will be permitted in open spaces only, with a limit of 10 people at most, and all the while maintaining a distance of 2 meters from person to person. Going out to mikvehs for men will be permitted, as long as there will no more than 3 men in the same place at the same time). Prayer will be permitted in the participation of no more than 19 people, within a 500 meter distance from the residence or the workplace, in an open space and all the while maintaining a distance of at least 2 meters from person to person. Prayer will be permitted in the participation of no more than 19 people, within a 500 meter distance from the residence or the workplace, in an open space and all the while maintaining a distance of at least 2 meters from person to person. Zoos, safaris, or national parks may be opened for holding outdoor activities for people with disabilities in accordance with the guidances stipulated in the regulations. Physicians are forbidden from opening a clinic or an operating room for providing aesthetical treatment unless this treatment is required for an essential health-care need
2020-04-19 Schools closure  open special education programs with a limit of up to 3 children per group, subject to maintaining a fifteen-minute buffer between groups and maintaining hygiene.
2020-04-19 Limit public gatherings provisions for replacing on one-time basis workers from the non-essential workers list with workers from the essential worker's list, in a rate that will not exceed 25% of the number of workers in the essential worker's list, all subject to the provisions of the decision.
2020-04-22 Limit public gatherings llow the resumption of driving lessons and practical driving lessons
Italy
2020-04-11 Limit public gatherings Some exemptions added to essential business continuation, including book stores and children clothes stores, forestry work
2020-04-16 Limit public gatherings Agile work processes enabled for veterinary medicines operators to meet urgent needs
2020-04-15 Domestic travel restrictions Travel authorized for non-professional activities related to the cultivation of agricultural products and the breeding of cattle.
2020-04-10 Full lockdown Companies may restart their business, if they have been communicating with the prefect and a number of security aspects are in place and certain criteria met
2020-04-23 Limit public gatherings For the national Liberation Day certain forms of celebrations have been allowed
2020-05-04 Domestic travel restrictions Travel outside the region will instead be allowed for work, health, urgency reasons and for returning to one's home.
2020-05-04 Limit public gatherings Access to public parks will be allowed respecting the distance and regulating the entrances to the children's play areas
2020-05-04 Amendments to funeral and burial regulations As for religious ceremonies, funerals will be allowed, which will be attended by first and second degree relatives for a maximum of 15 people
2020-05-04 Limit public gatherings Take-away and food catering allowed again
2020-05-04 Limit public gatherings Closed-door training sessions of individual sports athletes will be allowed
2020-05-04 Full lockdown Manufacturing, construction, real estate brokerage and wholesale trade may restart again business under safety measures
Netherlands
2020-04-29 Limit public gatherings Children aged 12 and under will be allowed to play sports together outdoors under supervision.
2020-04-29 Limit public gatherings Young people aged 13 to 18 will be allowed to play sports together outdoors under supervision, but must stay 1.5 metres apart.
2020-04-29 Limit public gatherings Top-level athletes will be allowed to resume training sessions at dedicated training facilities if they maintain a distance of 1.5 metres from others.
2020-04-29 Limit public gatherings From 29 April people aged over 70 who live independently may be visited occasionally by the same one or two people.
Peru
2020-05-03 Partial lockdown The Government of Peru published a legislative decree, which stipulates the gradual re-opening of the economy in four stages. The first stage of the recovery, which will start in May, will enable certain restaurants to offer on-site pick-up and home delivery services. In addition, during the first stage, limited hotel and tourist transportation services will be allowed.
Poland
2020-05-04 Public services closure  Social Insurance Institut is restoring standard customer service at ZUS branches under strict hygiene measurements
2020-05-04 Limit public gatherings Shopping centres to reopen, under strict hygiene measures and without food centres and on-site catering services; fitness centres within shopping centres need to remain closed
2020-05-04 Limit public gatherings Hotels allowed to reopen, under strict hygiene measures
2020-05-04 Strengthening the public health system Medical rehabilitation services taken up again
2020-05-04 Limit public gatherings Recreational sport allowed, with person limits depending on sports
Portugal
2020-04-14 Schools closure  The Prime Minister announced today that for students up until the 9th year, the entire third period will continue with distance learning, with assessment, but without tests or exams.
2020-04-18 Partial lockdown lifting of the sanitary fence in Ovar, which ceased to operate at midnight, even though "through the application of special limitations", such as restrictions on freedom of movement
2020-04-22 Public services closure  Awareness campaign of foreign agricultural workers. The Minister of Internal Administration, Eduardo Cabrita, affirmed that the information actions on the pandemic aimed at foreign agricultural workers are important to defend themselves and the community, but also to maintain an essential activity for the population. Not applicable 22/04/2020 Portugal Govt Government https://www.portugal.gov.pt/pt/gc22/comunicacao/noticia?i=ministros-acompanharam-campanha-sensibilizacao-de-trabalhadores-agricolas-estrangeiros-em-olhao
2020-04-27 Public services closure  Carris stores and kiosks will reopen to the public on Monday, with safety rules adapted to the covid-19 prevention measures, announced the road transport company in the Lisbon region.
2020-05-04 Emergency administrative structures activated or established The plan for moving from a state of emergency to that of calamity has “a schedule of measures that comes into force every 15 days” - 4 and 18 May and 1 June - and, “after each of these phases, we will assess whether we are in a position, as we wish, to be able to take the next step ».
2020-05-04 Limit public gatherings the ban on any event or gathering of more than 10 people will remain, although at funerals, it is up to the mayors to define the maximum number of people who can participate, and in the religious service, restrictions on community celebrations are lifted
2020-05-04 Limit public gatherings "In public transport, there will be rules limiting 2/3 of its capacity, very demanding hygiene and cleaning standards, and the use of a community mask will be mandatory for all users,"
2020-05-04 Public services closure  reopening of the deconcentrated branches of public services, but with prior appointment by telephone or online, from 4 May.
Saudi Arabia
2020-04-29 Curfews Curfew restrictions have been eased in Al-Qatif governorate (Eastern province). Residents are now allowed to go out during the curfew i.e. 09.00 – 17.00 (local time).
2020-04-29 Domestic travel restrictions restrictions have been eased in Al-Qatif governorate (Eastern province). Residents are now allowed to enter and exit the governorate.
Singapore
2020-04-22 Economic measures Comencement of provisions relating to temporary reliefs under the COVID-19 (Temporary Measures) Act ("COVID-19 Act") from 20 April 2020. The COVID-19 Act imposes a moratorium on certain legal actions, so that parties have time to negotiate and work out their differences without the threat or uncertainty of legal proceedings.
2020-04-24 Limit product imports/exports Port Authorities Signed Declaration to Keep Ports Open to Seaborne Trade to Support Fight Against the COVID-19 Pandemic. Through this joint declaration, the signatories are committed to work together and ensure that: (1) Merchant ships can continue to berth at port terminals to carry out cargo operations and keep the global supply chain going; (2) Best practices are adopted, according to national circumstances, including precautionary measures for the shipping community, advisories and assistance for shore personnel and ship crew, and safe handling of cargoes during this period; and (3) Port authorities continue to share experiences in combating COVID-19 while safeguarding unimpeded maritime trade.
Spain
2020-04-13 Full lockdown Some sectors, including construction and manufacturing were allowed to go back to work
2020-04-16 Strengthening the public health system The Ministry of Health establishes the start of deadlines for evaluations and the final date of residence or training year of health professionals; Assessments may start from today
2020-04-27 Isolation and quarantine policies Childrens are allowed to leave their homes again under certain restrictions: children under 14 years old can take controlled walks, accompanied by an adult for one hour a day, during a wide schedule to avoid crowds (between 09:00 a.m. and 09:00 p.m.), to a distance of one kilometer around your home and without access to outdoor recreation areas for children or sports facilities. [https://www.mscbs.gob.es/en/gabinete/notasPrensa.do?id=4879]
2020-03-19 Isolation and quarantine policies Children that were not allowed to leave home are now allowed to accompany their parent (limited to single parents)
2020-05-01 Full lockdown People may be allowed to leave home and travel to collect agricultural produces meant for self-consumption
2020-05-02 Full lockdown Walks and physical activity allowed again according to schedules and ages (in municipalities with more than 5000 persons): Individual physical activity will be allowed once a day from 6:00 a.m. to 10:00 a.m. and from 8:00 p.m. to 11:00 p.m.; Adults with children under 14 years old may be allowed outside from 12:00 to 19:00.; People with special needs and over 70 years have 2 exclusive daily periods, in attention to their vulnerability.
Sweden
2020-04-16 General recommendations Change of recommendation for youth sport; no general advice against youth sport activities, under certain conditions (only persons without symptoms) and with max 50 persons
Switzerland
2020-04-27 Strengthening the public health system Hospitals will be able to resume all normal procedures that were temporarily suspended due to COVID-19
2020-04-27 Limit public gatherings Hairdressing salons, massage practices and cosmetic studios will be allowed to reopen
2020-04-27 Limit public gatherings DIY stores, garden centres and florists will also be allowed to reopen; as can unstaffed public facilities such as car washes
2020-04-27 Amendments to funeral and burial regulations Regulation that funerals are only allowed with the closest family circle present is lifted
2020-04-16 Military deployment Part of the military deployment suspended
2020-04-27 Strengthening the public health system Resumes activities in health sector
2020-04-24 Military deployment Reducation of army medical support
2020-04-27 Public services closure  Governmental offices to reopen
2020-04-20 Public services closure  Additional services may reopen from 20.04.2020, including chimney sweepers, open-air markets
2020-04-24 Military deployment Military deployment suspended in the canton
2020-04-30 Military deployment Military support suspended
2020-04-24 Other public health measures enforced Companies are mandated to develop safety protocols for their employees
2020-04-21 Limit public gatherings The government structures are exempted from five person gathering ban to ensure their continuation
2020-04-21 Limit public gatherings All child care institutions may reopen, to ensure ease of gradual opening
2020-04-27 Public services closure  Some public administration offices to reopen
2020-04-27 Public services closure  Some public administration offices to reopen
2020-04-27 Public services closure  Expansion of public transport network across country to gradually reopen
2020-04-17 Border closure  Certain additional exemptions for entry defined, e.g. family members
United Arab Emirates
2020-04-29 Domestic travel restrictions metro service is due to recommence from 29 April.
2020-04-29 Public services closure  Restaurants, shopping malls and other retail outlets are allowed to open between 06.00 and 22.00.
Source: ACAPS.